Comparing Verification Condition Generation with Symbolic Execution: An Experience Report
نویسندگان
چکیده
There are two dominant approaches for the construction of automatic program verifiers, Verification Condition Generation (VCG) and Symbolic Execution (SE). Both techniques have been used to develop powerful program verifiers. However, to the best of our knowledge, no systematic experiment has been conducted to compare them. This paper reports on such an experiment. We have used the specification and programming language Chalice and compared the performance of its standard VCG verifier with a newer SE engine called Syxc, using the Chalice test suite as a benchmark. We have focused on comparing the efficiency of the two approaches, choosing suitable metrics for that purpose. Our metrics also suggest conclusions about the predictability of the performance. Our results show that verification via SE is roughly twice as fast as via VCG. It requires only a small fraction of the quantifier instantiations that are performed in the VCG-based verification.
منابع مشابه
Viper: A Verification Infrastructure for Permission-Based Reasoning
The automation of verification techniques based on firstorder logic specifications has benefited greatly from verification infrastructures such as Boogie and Why. These offer an intermediate language that can express diverse language features and verification techniques, as well as back-end tools such as verification condition generators. However, these infrastructures are not well suited for v...
متن کاملVerifying Cryptographic Code in C: Some Experience and the Csec Challenge
The security of much critical infrastructure depends in part on cryptographic software coded in C, and yet vulnerabilities continue to be discovered in such software. We describe recent progress on checking the security of C code implementing cryptographic software. In particular, we describe projects that combine verification-condition generation and symbolic execution techniques for C, with m...
متن کاملUsing Symbolic (Java) PathFinder at NASA
Symbolic (Java) PathFinder (SPF) is a symbolic execution tool that is used for the automated generation of test cases that satisfy various coverage criteria, such as condition, path and MC/DC coverage. The tool has been used at NASA, in academia, and in industry, most notably at Fujitsu. We describe our experience with using SPF and we identify some of the challenges for making the tool more us...
متن کاملVerifying LTL Properties of Bytecode with Symbolic Execution
Bytecode languages are at a very desirable degree of abstraction for performing formal analysis of programs, but at the same time pose new challenges when compared with traditional languages. This paper proposes a methodology for bytecode analysis which harmonizes two well-known formal verification techniques, model checking and symbolic execution. Model checking is a property-guided exploratio...
متن کاملHigher-order symbolic execution for contract verification and refutation
We present a new approach to automated reasoning about higher-order programs by endowing symbolic execution with a notion of higher-order, symbolic values. To validate our approach, we use it to develop and evaluate a system for verifying and refuting behavioral software contracts of components in a functional language, which we call soft contract verification. In doing so, we discover a mutual...
متن کامل